using System;
using System.Collections.Generic;
using System.Globalization;
using Medianamik.Core.Interfaces;

namespace Medianamik.Core.DAL.Repositories
{
    public interface INodeRepository
    {
        INodeWrapper NewNode(IMedianamikDTO dto);
        INodeWrapper NewNode(IMedianamikDTO dto, bool validateHierarchicalRules);
        INodeWrapper GetExistingNode(IMedianamikDTO dto);
        void SaveNode(INodeWrapper node);
        void PublishNode(INodeWrapper node, CultureInfo culture);
        void SaveNodeHandlingPositionAndParentNodeId(INodeWrapper node, Guid? parentNodeId, short? position);
        void PublishNodeHandlingPositionAndParentNodeId(INodeWrapper node, Guid? parentNodeId, short? position, CultureInfo culture);
        void Reorder(Guid id, Guid destinationId, DropPosition position);
        void SetActiveStatus(Guid id, CultureInfo culture, ActiveStatus status);
        void SaveNodes(IEnumerable<Node> nodes);
    }
}